package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.entity.FunBalInfo;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * @description:小区Mapper
 * @ClassName: BaseRegionInfoMapper
 * @author: youmingke
 * @date: 2019-05-20 16:32
 */
@Repository
public interface BaseRegionInfoMapper extends BaseMapper<BaseRegionInfo> {
    /**
     * 新区信息逻辑删除时根据id修改状态
     *
     * @param id
     */
    int updateStateById(@Param("id") String id, @Param("state") String state);

    BaseRegionInfo getInfoById(@Param("id") String id);

    /**
     * 小区名称
     */
    List<BaseRegionInfo> selectRegion();

    List<BaseRegionInfo> getListSubmit(BaseRegionInfo baseRegionInfo);

    /**
     * 模糊查询建档小区信息列表
     *
     * @param zoneCode 赋值区域,
     * @param fuzzy    模糊查询参数
     * @return 小区列表
     */
    List<BaseRegionInfo> fuzzySearch(@Param("zoneCode") String zoneCode, @Param("fuzzy") String fuzzy, @Param("flowState") String flowState);


    /**
     * 精确查询
     *
     * @param info
     * @return
     */
    List<BaseRegionInfo> findList(@Param("info") BaseRegionInfo info, @Param("fuzzy") String fuzzy);

    /**
     * 模糊查询房屋合并/拆分变更列表;小区信息维护列表； 业主信息维护列表
     *
     * @param zoneCode 赋值区域
     * @param fuzzy    模糊查询参数
     * @return 小区列表
     */
    List<BaseRegionInfo> fuzzyRegionSearch(@Param("zoneCode") String zoneCode, @Param("fuzzy") String fuzzy);


    int getCountByRegionName(@Param("regionName") String regionName, @Param("id") String id);

    /**
     * 查询小区编号最大值
     *
     * @return
     */
    String selectMaxRegionNo();


    List<BaseRegionInfo> fuzzySearchByParam(BaseRegionInfo baseRegionInfo);

    /**
     * 查询该小区的物业企业
     */
    int selectPropertyNo(String propertyNo);

    /**
     * 查询该小区的开发企业
     *
     * @param developNo
     * @return
     */
    int selectDevelopNo(String developNo);

    /**
     * 查询小区列表，用在批量退款
     *
     * @param baseRegionInfo
     * @return
     */
    List<BaseRegionInfo> getListToBatchRef(BaseRegionInfo baseRegionInfo);

    /**
     * @param fuzzy
     * @return
     */
    List<FunBalInfo> selectOwnerFunBal(String fuzzy);

    /**
     * 根据小区id查询小区名
     *
     * @param id
     * @return
     */
    String getRegionNameById(String id);

    /**
     * 根据小区id查询小区名
     *
     * @param id
     * @return
     */
    List<String> getRegionNameByIdList(String id);

    /**
     * 模糊查询小区待审批列表
     *
     * @param baseRegionInfo 查询实体
     * @return 待审核小区列表
     */
    List<BaseRegionInfo> fuzzyAuditList(BaseRegionInfo baseRegionInfo);

    /**
     * 查询
     *
     * @param id
     * @return
     */
    int getCountByCommit(String id);

    List<BaseRegionInfo> selectCountByDev(BaseRegionInfo baseRegionInfo);

    List<BaseRegionInfo> selectByCommit(BaseRegionInfo baseRegionInfo);

    /**
     * 查询这和单位有没有被使用过
     *
     * @param zoneCode
     * @return
     */
    int selectZoneCode(String zoneCode);

    /**
     * 查询自然幢数量
     *
     * @param regionId
     * @return
     */
    int selectCount(String regionId);

    /**
     * 查询该小区是否绑定小区id
     *
     * @param regionId
     * @param companyId
     * @return
     */
    int selectHaveOrg(@Param("regionId") String regionId, @Param("companyId") String companyId);

    /**
     * 通过行政区域查询小区信息
     *
     * @param zoneCode 37000234'
     * @param type     企业类型
     * @return
     */
    List<BaseRegionInfo> selectCommitteByZoneCode(@Param("zoneCode") String zoneCode, @Param("type") String type);

    /**
     * 根据小区名称查询小区信息
     *
     * @param regionName 小区名称
     * @return 小区信息
     */
    BaseRegionInfo getInfoByRegionName(String regionName);
}
